In the field of computing, many types of applications executing on a computer system may be developed that interact with an application host that provides some functionality for the application. For example, an application host may provide the application to the computer system over a network for local execution; the application host may handle a portion of the processing of the application, or may even execute the logic of the application on behalf of the application while the computer system provides an interface to the remotely executing application; and/or the application host may store some data objects that are used by the application, such as media files rendered by a media viewer application or a database exposed to a user through a data-driven application. The application host often communicates with the computer system over a network, and the application may initiate by first contacting the application host.
In some such scenarios, the application is executed on the computer system within a virtual environment, such as a web browser. The virtual environment may provide many advantages as compared with native execution of the application. As a first example, an application may not be fully trusted, such as an application received from an untrusted party that may endeavor to perform incorrect or malicious operations on the computer system. The virtual environment may facilitate the execution of such applications by isolating the application from accessing the computing environment (comprising aspects of the computer system such as the file system, the set of user accounts, other processes and applications that may be concurrently executing, and segments of memory that do not belong to the application), thereby limiting the potential damage that might be caused by the untrusted application. Conversely, the virtual environment may isolate the application from interference by other applications, and may therefore safeguard the application resources utilized by the application. As a second example, an application may perform operations that are differently achieved on different computer systems, and the virtual environment may provide an interface for the application that accepts requests in a less system-dependent manner and adapts such operations to the particular computer system. For example, a web browser may allow applications written in a popular but system-independent computer language, such as JavaScript, to execute appropriately on a computer system in view of its particular capabilities. As a third example, a virtual environment may combine the application with other data objects; e.g., a web browser may present an application to a user not as a standalone application, but embedded in other visual content comprising a website of the application host.